Plurality of interface files usable for access to bios

ABSTRACT

A system may comprise a processor ( 12 ) and first storage device ( 18 ) coupled to the processor. The first storage device contains a basic input/output system (BIOS) ( 24 ) executable by the processor. The system may also comprise a second storage device ( 18 ) coupled to the processor. The second storage device may contain a management interface ( 32 ) usable by an operating system to access the BIOS. A plurality of interface foes ( 28 ) may also be provided, each interface file being usable by the management interface to access the BIOS and each interface file defining one or methods for use by the interface or BIOS. While executing the BIOS, the processor determines a configuration of the system and, based on the determined configuration, selects a particular interface file for use during run-time.

BACKGROUND

A computer system includes a basic input/output system (BIOS) which provides access to low level hardware devices such as keyboards, disk drives, etc. In some systems, an interface, such as the Windows Management Instrumentation (WMI), provides the operating system with access to the BIOS. An interface file, such as a managed object format (MOF) file, is also provided to provide access by the operating system to the BIOS. A MOF file describes classes and methods that are available to the operating system and any applications running thereon. The WMI interface defines the interface to BIOS, and the MOF file defines the data structures and the methods that are supported by the BIOS.

BRIEF DESCRIPTION OF THE DRAWINGS

For a derailed description of illustrative embodiments of the invention, reference will now be made to the accompanying drawings in which:

FIG. 1 shows a system in accordance with various embodiments;

FIG. 2 shows a method in accordance with various embodiments;

FIG. 3 shows a system in accordance with another embodiment; and

FIG. 4 shows a method in accordance with another embodiment.

DETAILED DESCRIPTION

Different configurations of computer systems have different low level functionality. For example, one computer system might have temperature sensors while another computer system does not. The BIOS in the former computer system would provide support to access the temperature sensors. The BIOS in the latter computer system (no temperature sensors) would not need to provide such support.

The MOF file typically is compiled before its installation in the computer system and thus before the computer is assembled from its constituent parts. Computers usually do not have the ability to edit or replace their MOF file with a new MOF file. Because, the MOF file is static and because a variety of computer system configurations are generally made available in the computer market, in at least some instances, a MOF file that can support any computer system configuration is included in each computer system. Such a MOF file may provide support for a device (e.g., a temperature sensor) or other type of configuration element (e.g., security credential) that may not exist in the particular system in which that MOF file is used.

In accordance with various embodiments, a plurality of interface (MOF) files are provided in non-volatile storage of an electronic system such as a computer. Logic, such as the BIOS of the system, is executed by the processor to determine the configuration of the system and selects an appropriate interface the from among the multiple possible interface files and uses the selected interface file to permit the operating system or applications running under the operating system to access the BIOS. In other embodiments, an uncompiled interface file is provided from which, based on the system configuration, a suitable compiled interface file is generated.

FIG. 1 shows a system 10 in accordance with various embodiments. The system illustrated in FIG. 1 is that of a computer, but may be representative of other types of systems in other embodiments. As shown, system 10 comprises a processor 12 coupled to three storage devices 14, 16, and 18. Storage device 14 comprises volatile storage such as random access memory and as such is referred to as “memory.” Storage device 16 comprises non-volatile storage such as a hard disk drive (HDD) 16 and is referred to as a “HDD.” Storage device 18 also comprises non-volatile storage such as any form of read-only memory (ROM) and as such is referred to as a “ROM.” The ROM 18 may comprise a non-programmable ROM, a programmable ROM (PROM), an electrically-erasable PROM (EEPROM), and the like. The ROM 18 stores the system's basic input/output system (BIOS) 24 and may also be referred to as the “system ROM.” Any one or a combination of the storage devices 14-18 are referred to herein as computer-readable storage media.

The BIOS 24 comprises code that is executed by the processor 12 during system initialization to perform a power-on self-test (POST), The BIOS 24 also comprises code that provides access to various hardware devices including, for example, keyboard, mouse, temperature sensors, disk drives, etc, During or after boot-up of the system 10, the BIOS 24 in accordance with at least some embodiments is copied to memory 14 and executed from memory 14 thereafter. The copy of BIOS 24 in memory 14 is represented as BIOS 24 a in FIG. 1.

The various storage devices 14-18 couple to the processor through one or more busses and/or intervening logic (e.g., a bridge device). While one illustrative architecture for system 10 is shown in FIG. 1, in other embodiments, different architectures can be used.

Referring still to FIG. 1, the HDD 16 stores an operating system (OS) 30 and a management interface 32. The OS 30 and management interface 32 comprise code that is executable by the processor 12. The OS 30 provides a platform on which one or more applications can execute. The management interface 32 provides an interface usable by the OS 30 to access the BIOS 24 (references herein to BIOS 24 include BIOS 24 a as well). In accordance with at least one embodiment, the OS 30 comprises the WINDOWS® or WINDOWS VISTA® operating systems and the management interface comprises the Windows Management Instrumentation (WMI) both from Microsoft Corp. Upon boot-up of system 10, the OS 30 and management interface 32 are copied to memory 14 and are illustrated in FIG. 1 as OS 30 a and management interface 32 a. References herein to OS 32 include the copy of the OS in memory 14 (OS 30 a). Similarly, references herein to management 32 include the copy of the management interface in memory 14 (management interface 32 a).

In the embodiment of FIG. 1, the system ROM 18 also stores a plurality of interface files 28. In other embodiments, the interface files 28 are stored elsewhere besides on the system ROM 18. Each interface file 28 describes classes and methods that are available to the OS 32 and any applications running thereon. In accordance with at least one embodiment, each interface file 28 is a management object format (MOF) file. In accordance with various embodiments, during system initialization or boot-up, the processor 12 of system 10 determines the system's configuration and selects an interface file 28 suitable for that particular configuration. The selected interface file 28 is selected for use during run-time (after the operating system has loaded) of system 10 and copied to storage device 14 for subsequent use from storage device 14. The copy of the interface file in storage device 14 is represented as interface file 28 a in FIG. 1. In accordance with at least some embodiments, the use of the selected interface file 28 may be as follows: the OS 32, or an application running under the OS 32, may initiate a request for data or call for a particular method to the management interface 32 for data. The management interface 32 generates a system management interrupt (SMI) which, in turn, is processed by the BIOS 24. BIOS 24 retrieves the requested data or performs the called method, and provides the retrieved data or status resulting from the execution of the called method to the logic (OS 32 or application) that initiated the access to BIOS in the first place. The interface files 28 shown in the example of FIG. 1 are pre-compiled files. That is, the interface files 28 stored on system ROM 18 were compiled prior to being loaded onto system ROM 18. Once an interface file 28 is selected, that file then can be executed without having to compile the file as the file is already compiled in this embodiment,

The processor 12 can determine the configuration of the system 10 in accordance with any of a variety of techniques. For example, one or more non-volatile storage devices 40 (e.g., complementary metal oxide semiconductor (CMOS) storage devices) may store some or all, of the configuration information associated with the system 10, or at least enough of the configuration sufficient for the selection of the interface file 28. Such configuration information may include, for example, presence of hardware devices such as a case lock and/or temperature sensors, verified security credentials, and the operating system executing in the system 10.

In accordance with another embodiment, the configuration of the system 10 can be determined by the BIOS 24 issuing calls to all possible configuration elements for each such element, if present, or associated logic to reply to the call with information indicating whether that element is present. If the element is present, the element will reply to the call; if the element is not present, no reply will be issued. For example, the BIOS 24 may issue calls to all hardware devices that conceivably may be present in the system to ascertain whether each such device is present or absent. Further, BIOS 24 may issue calls to detect the presence or absence of non-hardware configuration elements such as security credentials.

Via whatever mechanism or procedure is used to determine the configuration of the system 10, the interface file 28 most suitable for use in a system with that particular configuration is selected for use, In some embodiments, a data structure 29 (e.g., a look-up table) may be stored in the system ROM 18. Such a data structure 29 may provide a mapping between various configurations and interface files 28. Thus, upon determining the configuration for system 10, the data structure 29 is accessed to look-up the corresponding interface file. In other embodiments, logic that selects the correct interface file 28 for a given configuration may be hard-coded into code such as BIOS 24.

In some embodiments, the system ROM 18 also stores an Advanced Configuration Power Interface (ACPI) differentiated system description table 26. The interface file 28 is selected for use in some embodiments by embedding in the ACPI table 26 a secondary system description table containing the selected MOF file.

The selected interface file 28 is used during run-time (i.e., after the OS 30 begins to execute) to enable the OS 30 to access the BIOS 24. For example, the interface file 28 allows users to perform various actions through interaction with the OS such as changing BIOS configuration options, viewing temperature sensor data, performing security operations, etc.

FIG. 2 illustrates a method 100 implemented on system 10. Each action depicted in FIG. 2 is performed by the processor 12 in accordance with at least some embodiments. At 102, the processor 12 determines the configuration of the system 10. At 104, one of the plurality of interface files is selected by the processor 12 based on the system's configuration. At 106, the processor 12 retrieves and uses the selected interface file to enable the OS 30 to access the BIOS 24 during run-time.

As noted above, the interface files shown in FIG. 1 may have been compiled prior to being loaded onto system ROM 18. In other embodiments, the interface files 28 may not be pre-compiled and may be plain text files that will need to be compiled by system 10 prior to being used. In some embodiments, system ROM 18 stores only a single, uncompiled interface file. FIG. 3 illustrates an embodiment of a system 130 in which an uncompiled interface file 38 is stored on a system ROM 51. The system ROM 51 in this embodiment comprises BIOS 24, ACPI table 26, a data structure 46, and a compiler 50 as shown.

FIG. 4 illustrates a method 150 for use with an uncompiled interface the 28. The method 150 in FIG. 4 (discussed in reference to FIG. 3 as well) is performed by the processor 12 in accordance with at least some embodiments. At 152, the configuration of the system 130 is determined as explained previously. At 154, for each configuration element of the configuration so determined, the method comprises selecting a subset of the uncompiled interface file 38 and storing said selected subset to a target interface file 42 created in memory 14 and dynamically assembled during system configuration or during run-time. A particular configuration element can be mapped to a section of the text of the interface file 38, at 154. For example, at 152 it may be determined that a temperature sensor is present in the system 130. If a temperature sensor is present, it can be mapped to a section of the uncompiled interface file 38 that relates to accessing and using such a temperature sensor. In some embodiments, a data structure (D.S.) 46 is provided on, for example, system ROM 51. Such data structure 46 maps the configuration elements to the corresponding portions of the interface file 38.

Once the target interface file 42 is created in memory 14 from the uncompiled interface file 38, the target interface file 42 is compiled (156) to produce compiled target interface the 44. A compiler such as a MOF compiler may be provided on system ROM 18 for this purpose. At 158, the dynamically-compiled interface file 44 is used as explained previously.

The above discussion is meant to be illustrative of the principles and various embodiments of the present invention. Numerous variations and modifications will become apparent to those skilled in the art once the above disclosure is fully appreciated. It is intended that the following claims be interpreted to embrace all such variations and modifications. 

1. A system, comprising: a processor (12); first storage device (18) coupled to said processor, said first storage device containing a basic input/output system (BIOS) (24) executable by said processor; and second storage device (16) coupled to said processor, said second storage device containing a management interface usable by an operating system to access said BIOS; a plurality of interface files (28), each interface file is usable by said management interface to access said BIOS and each interface file defining one or more methods for use by said management interface; wherein, while executing said BIOS, said processor determines a configuration of said system and, based on said determined configuration, selects a particular interface file for use during run-time.
 2. The system of claim 1 wherein said first storage device contains said plurality of interface files.
 3. The system according to any of the above claims wherein said plurality of interface files comprises managed object format (MOF) files.
 4. The system according to any of the above claims wherein each of said plurality of interface files is compiled before storage on said system.
 5. The system according to any of the above claims wherein the BIOS determines the configuration by accessing a value from a third storage device.
 6. The system according to any of the above claims wherein said first storage device is a read-only memory and said plurality of interface files are contained on said read-only memory with said BIOS.
 7. A method, comprising: determining (102), by a processor, a configuration of a system; selecting (104), by the processor, one of a plurality of interface files, stored on said system, based on said configuration; and accessing (106), by the processor via execution of an operating system, a basic input/output system (BIOS) based on contents of the selected interface file.
 8. The method of claim 7 wherein said plurality of interface files comprise managed object format (MOF) files.
 9. The method of any of claims 7 and 8 wherein said determining and selecting are performed during system initialization.
 10. A system, comprising: a processor (12); first storage device (51) coupled to said processor, said first storage containing basic input/output system (BIOS) executable by said processor; and second storage device (16) coupled to said processor, said second storage device containing a management interface usable by an operating system to access said BIOS; an uncompiled interface file (38) usable by said management interface to access said BIOS and defining one or methods for use by said management interface; wherein said BIOS determines a configuration of said system and, based on said determined configuration, generates a target interface file based on said uncompiled interface file.
 11. The system of claim 10 wherein said system comprises a compiler (50) that compiles said target interface file.
 12. The system of claim 11 wherein said compiled target interface file enables an operating system to access a basic input/output system (BIOS).
 13. The system according to any of claims 10, 11, and 12 wherein said BIOS generates said target interface file by selecting a subset of text from said uncompiled interface file and storing said selected subset in said target interface file.
 14. The system according to any of claims 10, 11, 12, and 13 wherein said BIOS generates said target interface file by selecting a plurality of subsets of text from said uncompiled interface file, each subset of text corresponding to an aspect of said configuration.
 15. The system of claim 14 wherein said first storage device contains a data structure that maps each subset of text from the uncompiled interface the to a corresponding aspect of said configuration. 